﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

public partial class Consultar_Default : System.Web.UI.Page
{
    ChamadosDAO CDAO = new ChamadosDAO();
    protected void Page_Load(object sender, EventArgs e)
    {
        TecnicoDAO TDAO = new TecnicoDAO();
        //Verifica se quem está logado no sistema é um tecnico.
        //TDAO.VerificarRedirecionar();

        //Popula as DropDowns da página.
        if (!IsPostBack)
        {
            DdlAno.Items.Add(" - - ");
            CDAO.DropDownList(DdlAno, "SELECT YEAR(data_abertura) AS Ano, YEAR(data_abertura) AS Ano2 FROM chamados GROUP BY YEAR(data_abertura)");
            DdlMes.Items.Add(" - - ");
            CDAO.DropDownList(DdlMes, "SET lc_time_names = 'pt_BR';SELECT MONTH(data_abertura) AS Mes, MONTHNAME(data_abertura) AS NomeMes FROM chamados GROUP BY MONTH(data_abertura)");
            TDAO.DropDownList(DdlTecnico);
            DdlTecnico.SelectedValue = "nenhum";
            DdlSituacao.Items.Add(" - - ");
            DdlSituacao.SelectedValue = " - - ";;
            CDAO.DropDownListSit(DdlSituacao);
        }

    }
    
    /// <summary>
    /// Click do botao atualizar.
    /// </summary>
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        DataTable dt = Filtrar();
        Session["DtFiltro"] = dt;
        GridView1.DataSource = dt;
        GridView1.DataBind();
        LBExportar.Visible = true;
    }

    /// <summary>
    /// Filtra pela data selecionada nas DropDownList's.
    /// </summary>
    /// <returns>DataTable para inserir no gridview.</returns>
    protected DataTable Filtrar()
    {
        string Ano = DdlAno.Text;
        string Mes = DdlMes.Text;
        if (Ano == " - - " && Mes == " - - ")
        {
            //Mostra Tudo
            return Filtro(false);
        }
        else
        {
            if (Ano == " - - ")
            {
                //Filtra por Mes
                CDAO.FiltroChamadosMes(Mes);
                return Filtro(true);
            }
            else
            {
                if (Mes == " - - ")
                {
                    //Filtra por Ano
                    CDAO.FiltroChamadosAno(Ano);
                    return Filtro(true);
                }
                else
                {
                    //Filtra por Ano e Mes
                    CDAO.FiltroChamadoAnoMes(Ano, Mes);
                    return Filtro(true);
                }
            }
        }
    }

    public DataTable Filtro(bool Continuo)
    {
        DataTable Dt = CDAO.TodosChamados();

        if (TbUsuario.Text.Trim() != "")
        {
            Dt = CDAO.FiltroLIKE("solicitante", TbUsuario.Text.Trim(), Continuo);
            Continuo = true;
        }
        
        if (TbEstacao.Text.Trim() != "")
        {
            Dt = CDAO.FiltroLIKE("estacao", TbEstacao.Text.Trim(), Continuo);
            Continuo = true;
        }

        if (TbAssunto.Text.Trim() != "")
        {
            Dt = CDAO.FiltroLIKE("assunto", TbAssunto.Text.Trim(), Continuo);
            Continuo = true;
        }

        if (DdlTecnico.SelectedValue.ToString() != "nenhum")
        {
            Dt = CDAO.FiltroIGUAL("Tecnicos_codigo", DdlTecnico.SelectedValue.ToString(), Continuo);
            Continuo = true;
        }

        if (DdlSituacao.SelectedValue.ToString() != " - - ")
        {
            Dt = CDAO.FiltroIGUAL("Situacao_codigo", DdlSituacao.SelectedValue.ToString(), Continuo);
            Continuo = true;
        }

        return Dt;
    }

    /// <summary>
    /// Click do detalhes no gridview, que pega o codigo do chamado e manda para outra página atraves de URL.
    /// </summary>    
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Redirect("Detalhes.aspx?CodChamado=" + GridView1.SelectedDataKey.Value.ToString());
    }
    protected void LBExportar_Click(object sender, EventArgs e)
    {
        if (Session["DtFiltro"] != null)
        {
            CDAO.Exportar((DataTable)Session["DtFiltro"]);
        }
    }
}